[No space left on device] inode 枯渇したときの対処方法
テクニカルサポート部の 丸屋 正志(まるちゃん)です。
ファイルを作成しようとしたら No space left on device が標準出力され、ターミナルで df -i を実行したけれども十分なスペースがあるのに作成出来なかったことはないですか?
1. そもそも inodeとは?
- IT用語辞典より - inode 【iノード】
inode 【iノード】
inodeとは、UNIX系OSの一部のファイルシステムで用いられる、ファイルやディレクトリについての情報を記録した管理データのこと。
inodeは一つ一つのファイルやディレクトリごとに作成され、各inodeには装置内で固有(一意)の整数値(inode番号)が割り当てられる。ファイルやディレクトリはシステム上ではこのinode番号で識別される。
2. inode 使用状況確認手順
ターミナル上で df -i と入力して実行することで確認が出来ます。
[ec2-user ~]$ df -i ファイルシス Iノード I使用 I残り I使用% マウント位置 ... (省略) ... /dev/xvda1 256019 256019 0 100% / ... (省略) ...
2.1. 各項目について
項目 | 説明 |
Inodes / Iノード | 該当 device で利用出来る inode の限界値 |
IUsed / I使用 | inode 使用量 |
IFree / I残り | inode 空き容量 |
IUse% / I使用% | inode 使用率 |
3. inode のサイズ拡張手順
今から inode のサイズ拡張をしていきます・・・の前にまずはバックアップを取得しましょう。
下記サイトを参考にバックアップをしてください。
- 【EC2】AMI イメージ作成手順
本番環境で実施している場合は、必ずバックアップを取得しましょう。(大事なことなので2回!)
公式ドキュメントが大変わかりやすいので一部抜粋して記載していきます!
- ボリュームサイズ変更後の Linux ファイルシステムの拡張 - 例: EBS ボリュームのファイルシステムを拡張する
この例では、T2 インスタンスなどのインスタンスのブートボリュームのサイズを 8 GB から 16 GB に変更し、追加ボリュームを 8 GB から 30 GB に変更したとします。サイズを変更したボリュームのファイルシステムを拡張するには、以下の手順を使用します。
3.1. ファイルシステムの確認
各ボリュームで使用中のファイルシステムを確認するには、df -hT コマンドを実行することで確認が出来ます。
[ec2-user ~]$ df -hT Filesystem Type Size Used Avail Use% Mounted on /dev/xvda1 ext4 8.0G 1.9G 6.2G 24% / /dev/xvdf1 xfs 8.0G 45M 8.0G 1% /data
3.2. ボリュームサイズの確認
ボリュームに拡張が必要なパーティションがあるかどうかを確認するには、lsblk コマンドを実行して、インスタンスにアタッチされているブロックデバイスに関する情報一覧を確認します。
[ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 30G 0 disk └─xvdf1 202:81 0 8G 0 part /data
この出力例は以下のことを示しています。
- ルートボリュームである /dev/xvda には、パーティション /dev/xvda1 があります。
- ボリュームのサイズが 16 GB の場合、パーティションのサイズは 8 GB のままになるため、拡張する必要があります。
- ボリューム /dev/xvdf には、パーティション /dev/xvdf1 があります。
- ボリュームのサイズが 30 GB の場合、パーティションのサイズは 8 GB のままになるため、拡張する必要があります。
3.3. パーティションの拡張
[3.2. ボリュームサイズの確認]の手順で示したボリュームやパーティションを持つボリュームの場合は、growpart コマンドを実行してパーティションを拡張します。
注意点としては、デバイス名とパーティション番号の間にスペース(半角空白)がある点に注意してください。
[ec2-user ~]$ sudo growpart /dev/xvda 1 [ec2-user ~]$ sudo growpart /dev/xvdf 1
3.4. パーティション変更の確認
増加したボリュームサイズがパーティションに反映されていることを確認するには、再度 lsblk を実行することで確認が出来ます。
[ec2-user ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 16G 0 disk └─xvda1 202:1 0 16G 0 part / xvdf 202:80 0 30G 0 disk └─xvdf1 202:81 0 30G 0 part /data
3.5. ボリュームサイズの確認
各ボリュームのファイルシステムのサイズを確認するには、df -h を実行することで確認が出来ます。
[ec2-user ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 8.0G 1.9G 6.2G 24% / /dev/xvdf1 8.0G 45M 8.0G 1% /data ...
4. 最後に
ディスク容量だけではなく、inode についても日頃から確認をすることは非常に大事なことなため、是非とも確認をしてあげてください!